package main

import "fmt"

func Slice1() {
	s1 := []int{1, 2, 3, 4}
	fmt.Printf("%+v, len:%d, cap:%d \n", s1, len(s1), cap(s1))

	s1 = append(s1, 5)
	fmt.Printf("%+v, len:%d, cap:%d \n", s1, len(s1), cap(s1))

	s2 := make([]int, 3, 4)
	fmt.Printf("%+v, len:%d, cap:%d \n", s2, len(s2), cap(s2))

	s3 := make([]int, 4)
	fmt.Printf("%+v, len:%d, cap:%d \n", s3, len(s3), cap(s3))
}

func Slice2() {
	s1 := []int{1, 2, 3, 4}
	fmt.Printf("%+v, len:%d, cap:%d \n", s1, len(s1), cap(s1))

	ss2 := s1[0:2]
	fmt.Printf("%+v, len:%d, cap:%d \n", ss2, len(ss2), cap(ss2))

	ss2[1] = 100
	fmt.Printf("%+v, len:%d, cap:%d \n", s1, len(s1), cap(s1))
	fmt.Printf("%+v, len:%d, cap:%d \n", ss2, len(ss2), cap(ss2))

	ss2 = append(ss2, 500)
	fmt.Printf("%+v, len:%d, cap:%d \n", s1, len(s1), cap(s1))
	fmt.Printf("%+v, len:%d, cap:%d \n", ss2, len(ss2), cap(ss2))
}
